package tau.pimpmyfreedb.master;

import tau.pimpmyfreedb.GUI.AddExistWindow;
import tau.pimpmyfreedb.GUI.EditWindow;
import tau.pimpmyfreedb.common.IProgressUpdateClient;
import tau.pimpmyfreedb.common.types.User;
import tau.pimpmyfreedb.dal.DalResponse;
import tau.pimpmyfreedb.dal.DataType;

/**
 * the main BL interface
 */
public interface IPimpMaster {
    // --- general ---//

    public void startApplication();

    public void close();

    // --- dal --- //

    public void connectToDB(Callback<DalResponse> callback)
	    throws ClassNotFoundException;

    public UnifiedDalBridge getDal();

    // --- import --- //

    public void importData();

    // --- welcome screen --- //

    public void login(int userId);

    public void addNewUser(User user, IProgressUpdateClient progressClient,
	    Callback<DalResponse> callback);

    public void deleteUser(int userId);

    public void closeWelcomeScreen();

    // --- search --- //

    public void search();

    public void back();

    // --- music item --- //

    public void playOrShow();

    public void showItemDetails();

    // --- likes --- //

    public void showLikes();

    public void searchCurrentLike();

    // --- edit --- //

    public void edit();

    public void deleteMusicItem();

    public void searchSmall();

    public void addDataType(EditWindow editWindow, DataType artist);

    public void createNewItem(AddExistWindow addExistWindow, DataType dataType);

    public void handleEditResults(EditWindow editWindow);

    public void handleSelectedDataType(AddExistWindow addExistWindow);

    public void handleCancelEdit(EditWindow editWindow);

    public void removeItem(EditWindow editWindow);

    public void handleAddArtist();
}
